package com.itheima.info.manger.dao;

import com.itheima.info.manger.domain.Student;
/*
    库管类
        1.核心职责是管理我们的数据仓库-- 数组: 增删改查
        2.这里的所有方法【功能】都是给业务员用
 */
public class StudentDao {
   private static Student[] stus = new Student[5];//从局部变量的位置移到成员变量的位置,提升作用域范围


    //库管中的添加功能
    public boolean addStudent(Student stu) {


        //1.定义一个长度为5的数组,作为整个系统的数据容器
           //stus={null,null,null,null,null}

        //2.通过标记位思想来找到当前stu对象在数组中应存入的位置
            //2.1假设数组已经存满了,让index记录-1
        int index = -1;

        //2.2遍历数组
        for (int i = 0; i < stus.length; i++) {
            //2.3拿到每一个索引位置的元素
            Student student = stus[i];
            //2.4判断当前元素是否为null
            if (student == null) {
                //2.5修改标记,index记录当前索引 跳出循环
                index = i;
                break;
            }
        }
        //装满了
        if (index == -1) {
            return false;
        } else//装进去了
        {
            //不是-1表示还有位置可以可以存,将要添加的学生对象存入对应的索引上
            stus[index] = stu;
            return true;
        }
    }

    //库管中的查找功能
    public Student[] findAllStudents() {
        return stus;
    }


    //库管中的删除学生功能
    public void deleteStudentById(String delId) {
        //1.找到当前要删除的学号对应的学生对象在数组容器中的索引位置
        int index=getIndex(delId);
        //2用null去覆盖掉该索引位置对应的学生对象,从而达到删除效果
        stus[index]=null;
    }

    //获取所需索引的方法
    public int getIndex(String id){
        //先假设要查找的学号不存在,index先记录-1;
      int  index =-1;
        //遍历数组容器
        for (int i = 0; i < stus.length; i++) {
            //2.1拿到每一个学生对象
           Student stu=stus[i];
           //2.2判断当前学生对象的学号和要查找的学号是否相同
            if(stu!=null&&stu.getSid().equals(id)){
                //相同,说明要查找的学号存在,则修改暴击为当前学生对象的索引
                index=i;
                break;
            }
        }
        return index;
    }


    //库管中的修改学生功能
    public void updateStudentById(String updateId,Student newStudent) {
        //1.通过要修改的学号查找对应学生对象在数组容器中的索引位置
        int index=getIndex(updateId);
        //2.将newStudent去覆盖掉该索引位置的就对象,从而达到修改目的
        stus[index]=newStudent;
    }
}
